package itsm.isperp.framework.quartz.service;

import org.quartz.Scheduler;
import org.quartz.SchedulerException;

/**
 * 调度器服务接口
 */
public interface ISchedulerService {

	public static final String BEAN_ID = "appJobSchedulerService";
	public static final String JOB_INSTANCE_NAME = "jobInstanceName";
	public static final String JOB_APPLICATION_NAME = "isperp.jobApplicationName";
	public static final String DEFAULT_SCHEDULER_GROUP = "default_scheduler_group_";

	/**
	 * 获取当前创建的Scheduler，如果没有就创建一个新的
	 * 
	 * @return Scheduler 调度器
	 * @throws SchedulerException
	 */
	Scheduler retrieveScheduler() throws SchedulerException;

	/**
	 * 运行作业是否在当前调度器的实例中
	 * 
	 * @return
	 */
	boolean isRunJobInCurrentInstance();

	/**
	 * 获取作业实例名称
	 * 
	 * @return 作业实例名称
	 */
	String getJobInstanceName();

	/**
	 * 获取作业应用系统的名称
	 * 
	 * @return 应用系统的名称
	 */
	String getJobApplicationName();

	/**
	 * 重置调度器
	 * 
	 * @throws Exception
	 */
	void resetScheduer() throws Exception;

	/**
	 * 获取当前创建的Scheduler，如果不存在就返回null
	 * 
	 * @return Scheduler 调度器
	 * @throws SchedulerException
	 *             调度异常
	 */
	Scheduler getCurrentScheduler() throws SchedulerException;
}
